// pkgUser/pages/charge/index.js
import { prePayApi, payResultApi } from '../../../api/rechargeAndWithdraw.js'
import { getUserInfoApi } from '../../../api/my.js'
const app = getApp()
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 善币余额
    scoin: 0,
    // 选中金额
    active: 0,
    // 充值金额
    priceList: [
      { id: 10, money: '20币' },
      { id: 50, money: '100币' },
      { id: 100, money: '200币' },
    ],
    // 其他金额
    price: '',
    // 弹窗控制
    isSuccess: false,
    isError: false

  },
  // 点击切换充值金额
  onChangePrice(e) {
    this.setData({
      active: e.mark.id,
      price: ''
    })
  },
  // 输入金额
  onMorePrice(e) {
    this.setData({
      active: +e.detail
    })
  },
  // 跳转明细界面
  toDetail() {
    wx.navigateTo({
      url: '/pkgUser/pages/rechargeDetails/index',
    })
  },
  // 充值
  async onCharge() {
    const { active } = this.data
    // 判断金额是否为空
    if (active === 0) return wx.utils.toast('请选择', 'error')
    // 判断金额是否为整数
    if (Math.floor(active) !== active) return wx.utils.toast('须为整数', 'error')
    const res = await prePayApi({ description: '献爱心', openId: app.openid, price: active, userId: app.userId })
    wx.requestPayment({
      ...res,
      success: async (ref) => {
        const { code, msg } = await payResultApi(res.outTradeNo)
        if (code !== 200) return wx.utils.toast(msg, 'error')
        this.setData({
          isSuccess: true
        })
        // 更新善币
        this.getUserProfile()
      },
      fail: (res) => {
        if (res.errMsg==='requestPayment:fail cancel') return wx.utils.toast('已取消支付')
        this.setData({
          isError: true
        })
      }
    })
  },

  // 监听用户下拉刷新善币
  onPullDownRefresh(){
    // 刷新数据
    this.getUserProfile()
    // 数据更新完成，关闭下拉刷新
    wx.stopPullDownRefresh()
  },

  // 获取用户数据，将善币进行更新
  async getUserProfile() {
    // 调用接口获取昵称和头像
    const res = await getUserInfoApi(app.userId)
    // 存储数据
    app.userInfo = res
    const { scoin } = res
    // 渲染数据
    this.setData({ scoin })
  },


  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    if (app.userInfo) {
      this.setData({
        scoin: app.userInfo.scoin
      })
    }else{
      this.getUserProfile()
    }
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})